package com.nhjf.admin.util;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.regex.Pattern;

/**
 * 密码强度检查
 * @类功能说明：
 * @类修改者：
 * @修改日期：
 * @修改说明：
 * @公司名称：浙江汇购科技有限公司
 * @部门：技术部
 * @作者：龚一凡，蔡振锋
 * @创建时间：2018年1月8日-下午5:30:17
 * @版本：V1.0
 */
public class CheckPassword {

    /**
     * 密码复杂度应至少由3种字符以上组成（包括：小写字母、数字、特殊字符、大写字母）
     * @param passwordStr
     * @return
     */
    public static boolean checkPassword(String passwordStr) {
    	int num = 0;
        num = Pattern.compile("\\d").matcher(passwordStr).find() ? num + 1 : num; // 数字
        num = Pattern.compile("[a-z]").matcher(passwordStr).find() ? num + 1 : num; // 小写字母
        num = Pattern.compile("[A-Z]").matcher(passwordStr).find() ? num + 1 : num; // 大写字母
        num = Pattern.compile("[!@#$%^&*()_+\\[\\];'\\\\/.,<>?|\":}{]").matcher(passwordStr).find() ? num + 1 : num; // 特殊字符
        return num >= 3;
    }
    
    public static String getRandomPwd() {
    	char[] number = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
    	char[] lowerLetter = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
    	char[] upperLetter = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
    	Random random = new Random();
    	
    	List<Character> pwdList = new ArrayList<Character>();
    	
    	pwdList.add(number[random.nextInt(number.length)]);
    	pwdList.add(number[random.nextInt(number.length)]);
	    pwdList.add(number[random.nextInt(number.length)]);
    	pwdList.add(lowerLetter[random.nextInt(lowerLetter.length)]);
    	pwdList.add(lowerLetter[random.nextInt(lowerLetter.length)]);
    	pwdList.add(upperLetter[random.nextInt(upperLetter.length)]);
    	pwdList.add(upperLetter[random.nextInt(upperLetter.length)]);
    	pwdList.add(upperLetter[random.nextInt(upperLetter.length)]);
    	
    	Collections.shuffle(pwdList);
    	
    	String pwd = "";
    	for(char c : pwdList) {
    		pwd += c;
    	}
    	return pwd;
    }
}
